<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 使用最小体力爬楼梯(警告：这种情况不太符合题意，因为dp[i]是从前一个台阶爬上来产生的，像是先爬上去再付费)
    var minCostClimbingStairs = function (cost) {
      // 1. dp数组的含义，代表“到达每一个台阶所需花费的最小体力”
      // 2. 递归公式: dp[i] = Math.min(dp[i - 1]  + cost[i - 1] , dp[i - 2] + cost[i - 2])，取其中的一个最小值
      let dp = []
      // 3. 初始化dp数组 4. 顺序，从前往后
      dp[0] = 0
      dp[1] = 0
      for (let i = 2; i <= cost.length; i++) {
        dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])
      }
      console.log(dp, 'dp');
      // 到达顶部仍旧需要体力
      return dp[dp.length - 1]
    };
    // 5. 推导[10, 15, 20]
    // [10, 15, 30] 取倒数两个的最小值
    console.log(minCostClimbingStairs([10, 15, 20]));
    console.log(minCostClimbingStairs([1, 100, 1, 1, 1, 100, 1, 1, 100, 1]));
  </script>
</body>

</html>